﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using ControleCampeonato.Entidades;
namespace ControleCampeonato.DAO
{
    public class JogadorDAO: Interfaces.ICrude<Entidades.Jogador>
    {

        static string conexao = Properties.Settings.Default.CampeonatoConnectionString; 
            


        #region ICrude<Jogador> Members
        //ADO.NET puro na mao!!!
        //muito utilizado por quem programa orientado a objeto
        public List<ControleCampeonato.Entidades.Jogador> SelecionarTudo()
        {
            using (campeonatoEntities contexto = new campeonatoEntities())
            {
                return (from j in contexto.jogador select j).ToList();
            }
            
        }
        //Uso do ADO.NET com o SQLDataAdapter 
        //trabalhando com DATASET nao tipado, muito comum 
        //para quem trabalha com DataTable genericos
        public ControleCampeonato.Entidades.Jogador Selecionar(int id)
        {

            using (campeonatoEntities contexto = new campeonatoEntities())
            {
                return (from j in contexto.jogador where j.Id == id select j).FirstOrDefault();
            }   
            
            
        }

        public int Incluir(ControleCampeonato.Entidades.Jogador entidade)
        {
            using (campeonatoEntities contexto = new campeonatoEntities())
            {
                contexto.jogador.AddObject(entidade);
                contexto.SaveChanges();

                return entidade.Id;
            }   

        }

        public void Excluir(int id)
        {
            using (campeonatoEntities contexto = new campeonatoEntities())
            {
                contexto.jogador.DeleteObject (
                    (from j in contexto.jogador where j.Id == id 
                     select j).FirstOrDefault());
                contexto.SaveChanges();


            }   
            
        }

        public void Alterar(ControleCampeonato.Entidades.Jogador entidade)
        {

            using (campeonatoEntities contexto = new campeonatoEntities())
            {
                Jogador oldJOgador = (from j in
                                          contexto.jogador 
                                      where j.Id == entidade.Id
                                      select j)
                                              .FirstOrDefault();
                oldJOgador.Nome = entidade.Nome;
                oldJOgador.DataNascimento = entidade.DataNascimento;

                
                contexto.SaveChanges();

                
            }   
            
            
            
        }

        #endregion
    }
}
